﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Upeu.Matricula.Api.Models;
using Upeu.Matricula.Data.Business;
using Upeu.Matricula.Data.Entities;

namespace Upeu.Matricula.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ProfesorController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<ProfesorModel> Get()
        {
            //return new string[] { "value1", "value2" };
            return ProfesorBusiness.GetListByFilter("").Select(
                t => new ProfesorModel
                {
                    ProfeId = t.ProfeId,
                    Codigo = t.Codigo,
                    Nombre = t.Nombre,
                    Dni = t.Dni,
                    FechaNac = t.FechaNac,
                    Direccion = t.Direccion,
                    Especialidad = t.Especialidad,
                });
        }

        // GET api/<controller>/5
        public ProfesorModel Get(Guid id)
        {
            Profesor t = ProfesorBusiness.GetById(id);
            return new ProfesorModel
            {
                ProfeId = t.ProfeId,
                Codigo = t.Codigo,
                Nombre = t.Nombre,
                Dni = t.Dni,
                FechaNac = t.FechaNac,
                Direccion = t.Direccion,
                Especialidad = t.Especialidad,
            };
        }

        // POST api/<controller>
        public ProfesorModel Post([FromBody]ProfesorModel model)
        {
            Profesor t = ProfesorBusiness.Create(new Profesor
            {
                Codigo = model.Codigo,
                Nombre = model.Nombre,
                Dni = model.Dni,
                FechaNac = model.FechaNac,
                Direccion = model.Direccion,
                Especialidad = model.Especialidad,
            });
            return new ProfesorModel
            {
                ProfeId = t.ProfeId,
                Codigo = t.Codigo,
                Nombre = t.Nombre,
                Dni = t.Dni,
                FechaNac = t.FechaNac,
                Direccion = t.Direccion,
                Especialidad = t.Especialidad,
            };
        }

        // PUT api/<controller>/5
        public ProfesorModel Put(Guid id, [FromBody]ProfesorModel model)
        {
            Profesor t = ProfesorBusiness.Update(new Profesor
            {
                ProfeId = id,
                Codigo = model.Codigo,
                Nombre = model.Nombre,
                Dni = model.Dni,
                FechaNac = model.FechaNac,
                Direccion = model.Direccion,
                Especialidad = model.Especialidad,
            });
            return new ProfesorModel
            {
                ProfeId = t.ProfeId,
                Codigo = t.Codigo,
                Nombre = t.Nombre,
                Dni = t.Dni,
                FechaNac = t.FechaNac,
                Direccion = t.Direccion,
                Especialidad = t.Especialidad,
            };
        }

        // DELETE api/<controller>/5
        public void Delete(Guid id)
        {
            ProfesorBusiness.Delete(id);
        }
    }
}